package edu.upc.negocio;

import java.util.ArrayList;
import java.util.Date;

import edu.upc.entidades.Modulo;
import edu.upc.entidades.Rol;
import edu.upc.entidades.Usuario;

public class UsuarioNegocio {
	
	private ArrayList<Usuario> usuarios;//la variable usuarios va a ser del tipo Usuario
	private AdmRoles roles;
	
	public UsuarioNegocio(){
		this.usuarios = new ArrayList<Usuario>();
				
	}

	public ArrayList<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(ArrayList<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	public void insertar(String dniUsuario, String usuNom, String usuApPat, String usuApeMat, String usuLogin, 
			String usuCorreo, String usuCargo, String usuPass,
			String usuCreacio, String usuModificacion, String rol){

		//System.out.println(roles.getTotalRol());
		if(roles.buscarRol(rol)!=null){
			Usuario nuevousu = new Usuario(dniUsuario, usuNom, usuApPat, usuApeMat, usuLogin,
					usuCorreo, usuCargo, usuPass,
					usuCreacio, usuModificacion,
					rol);
		if(validarcampos(nuevousu) == true){
			this.usuarios.add(nuevousu);
		}
		}
		else
		System.out.println("No existe rol - No se puede completar el registro de usuario");
		
		
	}
	
	private boolean validarcampos(Usuario nuevousu) {
		if(nuevousu.getDniUsuario().isEmpty() || nuevousu.getUsuNom().isEmpty() 
			|| nuevousu.getUsuApPat().isEmpty() || nuevousu.getUsuApeMat().isEmpty()
			|| nuevousu.getUsuLogin().isEmpty() || nuevousu.getUsuCorreo().isEmpty()
			|| nuevousu.getUsuCargo().isEmpty() || nuevousu.getUsuPass().isEmpty()
			|| nuevousu.getUsuCreacion().isEmpty() || nuevousu.getUsuModificacion().isEmpty()
			|| nuevousu.getIdRol().isEmpty())return false;
			
		return true;
	}
	
	public void asignarTarea(String dni){
		Usuario user = null;
		for(Usuario usuario:usuarios){
			if(usuario.getDniUsuario().equals(dni)){
				user = usuario;
				user.setTareas(true);
			 	break;
			 	}
		}
		if(user == null)
		System.out.println("No existe Usuario.");
	}

	public boolean validarUsuario(String login , String pass){
		Usuario user = null;
		//por cada entidada usuario recorro la coleccion usuarios
		for(Usuario usuario:usuarios){
			if(usuario.getUsuLogin().equals(login) && usuario.getUsuPass().equals(pass)){
				user = usuario;
				System.out.println("Usuario Identificado.");
			 	break;
			 	}
		}
		
		if(user == null)
			return false;
		//si existe usuario, es decir, si entro en el IF anterior
		else return true;
	
	}
	public boolean buscarRolEnUsuario(String id) {
        for( Usuario mod  : usuarios)
            if(mod.getIdRol().equals(id)){
            	return true;
            }
        return false;
    }
	public Usuario buscarUsuario(String id) {
        for( Usuario mod  : usuarios)
            if(mod.getDniUsuario().equals(id)){
            	return mod;
            }
        return null;
    }
	public int getTotalUsuario() {
    	for( Usuario mod  : usuarios){
            //System.out.println("-Nombre :"+ mod.getUsuNom() + " -Codigo Modudlo :" + mod.getUsuLogin());
            }
        return usuarios.size();
    }

	public AdmRoles getRoles() {
		return roles;
	}

	public void setRoles(AdmRoles roles) {
		this.roles = roles;
	}
	
	public boolean eliminarUsu(String dni) {
    	Usuario mod = buscarUsuario(dni);
        if (mod != null){
        	if(mod.isTareas() == false){
        		usuarios.remove(mod);
        		System.out.println("Usuario Eliminado");
        		return true;
        	}
        	else{
            	System.out.println("No se puede eliminar al usuario, ya que cuenta con tarea/s asignada/s");
            	return false;
        	}
        }
        else{
        	System.out.println("No existe");
        	return false;
        }
        
    }

}
